// 实现可迭代器接口：iterator

// iterator:
const obj = {
        //iterable :内部定义一个可迭代的接口，返回一个可迭代的方法[Symbol.iterator]
        [Symbol.iterator]: function() {
            // iterator：迭代器接口，返回一个内部用于迭代的方法
            return {
                //iterationResult：迭代结果接口：返回一个迭代的对象{value:迭代值,done:迭代是否结束}
                next: function() {
                    return {
                        value: 'zce',
                        done: false
                    }
                }
            }
        }
    }
    // for (let i of obj) {
    //     console.log(i); //zce   一直执行循环，因为done为赋值true，关闭
    // }


const obj1 = {
    store: [100, 200, 300],
    [Symbol.iterator]: function() {
        var index = 0;
        return {
            next: () => {
                const result = {
                    value: this.store[index],
                    done: index > this.store.length ? true : false
                }
                index++;
                return result;
            }
        }
    }
}

for (let i of obj1) {
    console.log('iterator', i);
}